/******************************************************************************
 * mySCPsolver.hpp: Interface for My Steiner Constrained Path Solver class.
 *
 * Author: Carlos Eduardo de Andrade <andrade@ic.unicamp.br>
 *
 * (c) Copyright 2011 Institute of Computing, University of Campinas.
 *     All Rights Reserved.
 *
 *  Created on : Oct 01, 2011 by andrade
 *  Last update: Oct 02, 2011 by andrade
 *
 * This software is licensed under the Common Public License. Please see
 * accompanying file for terms.
 *****************************************************************************/

#ifndef mySCPsolver_HPP
#define mySCPsolver_HPP

// INCLUS�O OBRIGATORIA PARA HERAN�A DE SUA CLASS
#include "../steiner_constrained_path_solver.hpp"

// INCLUSOES ESPECIFICAS DE SEU CODIGO
#include "alg_ze.hpp"
#include "algoritmoBuscaLocal.h"
#include "algoritmoConstr.h"

/**
 * \brief My Steiner Constrained Path Solver class.
 * \author Carlos Eduardo de Andrade <andrade@ic.unicamp.br>
 * \date 2011
 *
 * This class contains the description a Steiner Constrained Path Solver.
 */
class mySCPsolver: public SteinerConstrainedPathSolver {
    public:
        /** \name Constructor and Destructor */
        //@{
		mySCPsolver();
        ~mySCPsolver();
        //@}

        /** \name Inherent Methods from SteinerConstrainedPathSolver*/
        //@{
        ResultType solve(const double max_time);

        ResultType solveFast(const double max_time);

        virtual bool loadInstance(const char* filename, double delayParam);
        //@}

        /** voce pode definir diversos outros metodos aqui se quiser **/
        void cortafolhas(int folha, ListGraph &graph);
    protected:
        /** \name Meus parametros muito doidos*/
        //{@
        // Ok, ok... isso eh meio POG, mas eh um jeito de contornar a limitacao
        // de nao poder iniciar constantes no cabecalho. Usem somente aqui, ok?
        // Jah estava assim quando eu cheguei.

        #define TAXA_ALEVINOS       0.7;  ///< Controla a taxa de eclosao de alevinos
        #define MU_GAMA_ALPHA_ZETA  0.3;  ///< Controla a geriniconcia.
        //@}

        /** \name Minhas variaveis */
        //{@
        AlgZe ze;
        //@}
};

#endif  //mySCPsolver_HPP
